package cn.leida.ruoyi.client.util;

import cn.hutool.core.io.FileUtil;
import cn.leida.base.git.config.AppGitCfg;
import cn.leida.common.json.util.JsonPathUtil;
import cn.leida.ruoyi.client.types.ClientDataType;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 保存客户数据到json文件中
 * 大于等于：criteriaBuilder.greaterThanOrEqualTo
 * 小于等于：criteriaBuilder.lessThanOrEqualTo
 *
 * @author lei
 * @create 2025-03-12 22:25
 */
public class ClientDataUtil {


    private static File jsonFile(ClientDataType dataType) {
        String fileName = "client_" + dataType.name() + ".json";
        return new File(".data/client/" + fileName);
    }

    /**
     * 保存json文件的更新时间
     */
    public static void saveUpdateTime(ClientDataType dataType) {
        FileTimeUtil.saveUpdateTime(jsonFile(dataType));
    }

    /**
     * 根据文件时间判断是否需要同步数据;
     */
    public static boolean needUpdate(ClientDataType dataType) {
        return FileTimeUtil.needUpdate(jsonFile(dataType));
    }

    /**
     * 数据保存到json文件
     */
    public static void saveClientDataList(ClientDataType dataType, List<JSONObject> datas) {
        FileUtil.writeUtf8String(JSONObject.toJSONString(datas), jsonFile(dataType));
    }

    /**
     * 从json文件中加载
     */
    public static List<JSONObject> loadClientDataList(ClientDataType dataType) {
        File jsonFile = AppGitCfg.clientMenuJsonFile();

        return JsonPathUtil.listJSONObject(jsonFile);
    }

}
